package com.yaDuo.common.manager

import com.yaDuo.common.request.SkipVerificationSSLSocketFactory
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory


/**
 * @author YaDuo
 * time 2024-11-18 11:25
 * Retrofit请求管理器，用于封装Retrofit的初始化和API服务的创建
 */
class RequestManager {

    companion object {
        /**  通过lazy实现了单例模式,RequestManager的实例只会在第一次访问时才会创建且只创建一次 **/
        val instance by lazy { RequestManager() }
        const val BASE_URL: String = "https://api.taobaounion.cn"
    }

    /**
     * 这个自定义的Retrofit实例设置了自定义的OkHttp客户端实例[SkipVerificationSSLSocketFactory]
     * 功能是忽略SSL验证
     **/
    private val request: Retrofit = Retrofit.Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .client(SkipVerificationSSLSocketFactory.instance.getOkHttpClientInstance())
        .build()

    /**
     * 动态创建Retrofit的服务接口实例
     * @param service 服务接口的类对象
     * @return 根据传入的服务接口类生成一个代理实例
     */
    fun <T> create(service: Class<T>?): T {
        if (service == null) {
            throw RuntimeException("Api service is null!")
        }
        return request.create(service)
    }

}